import Vue from 'vue'
import Vuex from 'vuex'
// 引入logger插件
import createLogger from 'vuex/dist/logger'

Vue.use(Vuex)

// store实例
const store = new Vuex.Store({
  state: {
    // 小程序启动时,storage=>vuex
    cart: wx.getStorageSync('cart') || []
  },
  mutations: {
    // 删除 cart里面选中的商品
    arrangeCart (state) {
      // 取
      let cart = state.cart
      // 更新
      state.cart = cart.filter(item => {
        // 没有勾选就返回
        return !item.checked
      })
    },
    // 更新state cart
    updateCart (state, cart) {
      state.cart = cart
    },
    // 加入购物车
    add2Cart (state, goodsId) {
      let cart = state.cart
      // 2. 更新cart
      // 1. 判断是否是第一次添加
      // 在数组中找一个项,它的goodsId和当前加入购物车goodsId相等的那一项
      let targetIndex = cart.findIndex(item => {
        return item.goodsId === goodsId
      })
      if (targetIndex > -1) {
        // 非首次添加，checked:true,num++
        let targetGoods = Object.assign(cart[targetIndex])
        targetGoods.checked = true
        targetGoods.num = targetGoods.num + 1
        // 把targetGoods插入到最前面
        cart.splice(targetIndex, 1)
        cart.unshift(targetGoods)
      } else {
        // 首次添加,{checked:true,num:1}插入到数组的最前面
        cart.unshift({
          // goodsId:goodId
          goodsId,
          checked: true,
          num: 1
        })
      }
    }
  },
  plugins: [createLogger()]
})

export default store
